basePath: /
definitions:
  auth.LoginRequest:
    properties:
      email:
        type: string
      password:
        type: string
    type: object
  auth.LoginResponse:
    properties:
      id:
        type: integer
    type: object
  auth.RegisterAccountRequest:
    properties:
      email:
        type: string
      firstName:
        type: string
      lastName:
        type: string
      password:
        type: string
    type: object
  auth.UpdateAccountRequest:
    properties:
      email:
        type: string
      firstName:
        type: string
      lastName:
        type: string
      password:
        type: string
    type: object
  ent.User:
    properties:
      email:
        description: Email holds the value of the "email" field.
        type: string
      firstName:
        description: FirstName holds the value of the "firstName" field.
        type: string
      id:
        description: ID of the ent.
        type: integer
      lastName:
        description: LastName holds the value of the "lastName" field.
        type: string
    type: object
  httputils.EmptyResponse:
    type: object
  repository.AddRegionRequest:
    properties:
      latitude1:
        example: "0"
        type: string
      latitude2:
        example: "0"
        type: string
      longitude1:
        example: "0"
        type: string
      longitude2:
        example: "0"
        type: string
      name:
        type: string
      osmData:
        $ref: '#/definitions/repository.OsmData'
      parentRegion:
        type: string
      regionType:
        type: integer
    type: object
  repository.AddRegionTypeRequest:
    properties:
      type:
        type: string
    type: object
  repository.AddWeatherRequest:
    properties:
      humidity:
        example: "0"
        type: string
      measurementDateTime:
        type: string
      precipitationAmount:
        example: "0"
        type: string
      regionId:
        type: integer
      temperature:
        example: "0"
        type: string
      weatherCondition:
        type: string
      weatherForecast:
        items:
          type: integer
        type: array
      windSpeed:
        example: "0"
        type: string
    type: object
  repository.Forecast:
    properties:
      dateTime:
        type: string
      id:
        type: integer
      precipitationAmount:
        example: "0"
        type: string
      regionId:
        type: integer
      temperature:
        example: "0"
        type: string
      weatherCondition:
        type: string
      windSpeed:
        example: "0"
        type: string
    type: object
  repository.ForecastAddRequest:
    properties:
      dateTime:
        type: string
      precipitationAmount:
        example: "0"
        type: string
      regionId:
        type: integer
      temperature:
        example: "0"
        type: string
      weatherCondition:
        type: string
      windSpeed:
        example: "0"
        type: string
    type: object
  repository.ForecastUpdateRequest:
    properties:
      dateTime:
        type: string
      precipitationAmount:
        example: "0"
        type: string
      temperature:
        example: "0"
        type: string
      weatherCondition:
        type: string
      windSpeed:
        example: "0"
        type: string
    type: object
  repository.OsmData:
    properties:
      boundingBox:
        items:
          type: string
        type: array
      includePOI: {}
      mapLink:
        type: string
      pointsOfInterest:
        items:
          $ref: '#/definitions/schema.OsmPointsOfInterest'
        type: array
    type: object
  repository.Region:
    properties:
      accountId:
        type: integer
      id:
        type: integer
      latitude1:
        example: "0"
        type: string
      latitude2:
        example: "0"
        type: string
      longitude1:
        example: "0"
        type: string
      longitude2:
        example: "0"
        type: string
      name:
        type: string
      osmData:
        $ref: '#/definitions/repository.OsmData'
      parentRegion:
        type: string
      regionType:
        type: integer
    type: object
  repository.RegionType:
    properties:
      id:
        type: integer
      type:
        type: string
    type: object
  repository.UpdateRegionRequest:
    properties:
      latitude1:
        example: "0"
        type: string
      latitude2:
        example: "0"
        type: string
      longitude1:
        example: "0"
        type: string
      longitude2:
        example: "0"
        type: string
      name:
        type: string
      osmData:
        $ref: '#/definitions/repository.OsmData'
      parentRegion:
        type: string
      regionType:
        type: integer
    type: object
  repository.UpdateRegionTypeRequest:
    properties:
      type:
        type: string
    type: object
  repository.UpdateWeatherRequest:
    properties:
      humidity:
        example: "0"
        type: string
      measurementDateTime:
        type: string
      precipitationAmount:
        example: "0"
        type: string
      regionName:
        type: string
      temperature:
        example: "0"
        type: string
      weatherCondition:
        type: string
      weatherForecast:
        items:
          type: integer
        type: array
      windSpeed:
        example: "0"
        type: string
    type: object
  repository.Weather:
    properties:
      humidity:
        example: "0"
        type: string
      id:
        type: integer
      measurementDateTime:
        type: string
      precipitationAmount:
        example: "0"
        type: string
      regionName:
        type: string
      temperature:
        example: "0"
        type: string
      weatherCondition:
        type: string
      weatherForecast:
        items:
          $ref: '#/definitions/repository.Forecast'
        type: array
      windSpeed:
        example: "0"
        type: string
    type: object
  repository.WeatherSearchResult:
    properties:
      humidity:
        example: "0"
        type: string
      id:
        type: integer
      measurementDateTime:
        type: string
      precipitationAmount:
        example: "0"
        type: string
      regionName:
        type: string
      temperature:
        example: "0"
        type: string
      weatherCondition:
        type: string
      weatherForecast:
        items:
          type: integer
        type: array
      windSpeed:
        example: "0"
        type: string
    type: object
  schema.OsmPointsOfInterest:
    properties:
      latitude:
        example: "0"
        type: string
      longitude:
        example: "0"
        type: string
      name:
        type: string
      type:
        type: string
    type: object
externalDocs:
  description: OpenAPI
  url: https://swagger.io/resources/open-api/
host: localhost:8088
info:
  contact:
    email: support@swagger.io
    name: API Support
    url: http://www.swagger.io/support
  description: The Weather server API
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  termsOfService: http://swagger.io/terms/
  title: Swagger API
  version: "1.0"
paths:
  /accounts/{accountId}:
    delete:
      description: Удаление учетной записи пользователя по id
      parameters:
      - description: accountId
        in: path
        name: accountId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/httputils.EmptyResponse'
        "400":
          description: Некорректные данные
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "403":
          description: Удаление не своего аккаунта или аккаунт не найден
          schema:
            type: string
      summary: Удаление учетной записи пользователя по id
      tags:
      - accounts
    get:
      description: Получение учетной записи пользователя по id
      parameters:
      - description: accountId
        in: path
        name: accountId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/ent.User'
        "400":
          description: Некорректные данные
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "404":
          description: Пользователь не найден
          schema:
            type: string
      summary: Получение учетной записи пользователя по id
      tags:
      - accounts
    put:
      description: Обновление учетной записи пользователя по id
      parameters:
      - description: accountId
        in: path
        name: accountId
        required: true
        type: integer
      - description: Данные для обновления учетной записи. Обновляются только переданные
          поля
        in: body
        name: data
        required: true
        schema:
          $ref: '#/definitions/auth.UpdateAccountRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/ent.User'
        "400":
          description: Некорректные данные
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "403":
          description: Обновление не своего аккаунта или аккаунт не найден
          schema:
            type: string
        "409":
          description: Аккаунт с таким email уже существует
          schema:
            type: string
      summary: Обновление учетной записи пользователя по id
      tags:
      - accounts
  /accounts/search:
    get:
      description: Поиск учетных записей пользователей по полям. При указании нескольких
        полей, поиск идет по всем полям одновременно (т.е применяется операция AND)
      parameters:
      - description: firstName
        in: query
        name: firstName
        type: string
      - description: lastName
        in: query
        name: lastName
        type: string
      - description: email
        in: query
        name: email
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/ent.User'
            type: array
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
      summary: Поиск учетных записей пользователей по полям
      tags:
      - accounts
  /login:
    post:
      description: Вход в систему. При успешном входе, id пользователя возвращается
        в Cookie "id"
      parameters:
      - description: Данные учетной записи для входа
        in: body
        name: data
        required: true
        schema:
          $ref: '#/definitions/auth.LoginRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/auth.LoginResponse'
        "401":
          description: Логин или пароль не верны
          schema:
            type: string
      summary: Вход в систему
      tags:
      - accounts
  /region:
    post:
      description: Добавление региона
      parameters:
      - description: region
        in: body
        name: data
        required: true
        schema:
          $ref: '#/definitions/repository.AddRegionRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/repository.Region'
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "409":
          description: Регион с такими latitude и longitude уже существует
          schema:
            type: string
      summary: Добавление региона
      tags:
      - regions
  /region/{regionId}:
    delete:
      description: Удаление региона по id
      parameters:
      - description: regionId
        in: path
        name: regionId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/httputils.EmptyResponse'
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "404":
          description: Регион не найден
          schema:
            type: string
      summary: Удаление региона по id
      tags:
      - regions
    get:
      description: Получение региона по id
      parameters:
      - description: regionId
        in: path
        name: regionId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/repository.Region'
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "404":
          description: Регион не найден
          schema:
            type: string
      summary: Получение региона по id
      tags:
      - regions
    put:
      description: Обновление региона
      parameters:
      - description: regionId
        in: path
        name: regionId
        required: true
        type: integer
      - description: region
        in: body
        name: data
        required: true
        schema:
          $ref: '#/definitions/repository.UpdateRegionRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/repository.Region'
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "404":
          description: Регион не найден
          schema:
            type: string
        "409":
          description: Регион с такими latitude и longitude уже существует
          schema:
            type: string
      summary: Обновление региона
      tags:
      - regions
  /region/{regionId}/weather/{weatherId}:
    delete:
      description: Удаление погоды для конкретного региона
      parameters:
      - description: regionId
        in: path
        name: regionId
        required: true
        type: integer
      - description: weatherId
        in: path
        name: weatherId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/repository.Region'
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "404":
          description: Регион с regionId не найден или forecastId в данном регионе
            не найдена
          schema:
            type: string
      summary: Удаление погоды для конкретного региона
      tags:
      - weather
    post:
      description: Добавление погоды для конкретного региона
      parameters:
      - description: regionId
        in: path
        name: regionId
        required: true
        type: integer
      - description: weatherId
        in: path
        name: weatherId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/repository.Weather'
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "404":
          description: Регион с regionId не найден или forecastId в данном регионе
            не найдена
          schema:
            type: string
      summary: Добавление погоды для конкретного региона
      tags:
      - weather
  /region/types:
    post:
      description: Добавление типа региона
      parameters:
      - description: regionType
        in: body
        name: data
        required: true
        schema:
          $ref: '#/definitions/repository.AddRegionTypeRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/repository.RegionType'
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "409":
          description: Такой тип региона уже существует
          schema:
            type: string
      summary: Добавление типа региона
      tags:
      - regions
  /region/types/{typeId}:
    delete:
      description: Удаление типа региона по id
      parameters:
      - description: typeId
        in: path
        name: typeId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/httputils.EmptyResponse'
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "404":
          description: Регион не найден
          schema:
            type: string
      summary: Удаление типа региона по id
      tags:
      - regions
    get:
      description: Получение типа региона по id
      parameters:
      - description: typeId
        in: path
        name: typeId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/repository.RegionType'
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "404":
          description: Тип региона не найден
          schema:
            type: string
      summary: Получение типа региона по id
      tags:
      - regions
    put:
      description: Обновление типа региона
      parameters:
      - description: typeId
        in: path
        name: typeId
        required: true
        type: integer
      - description: regionType
        in: body
        name: data
        required: true
        schema:
          $ref: '#/definitions/repository.UpdateRegionTypeRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/repository.RegionType'
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "404":
          description: Тип региона не найден
          schema:
            type: string
        "409":
          description: Такой тип региона уже существует
          schema:
            type: string
      summary: Обновление типа региона
      tags:
      - regions
  /region/weather:
    post:
      description: Добавление погоды
      parameters:
      - description: Описание данных погоды в регионе
        in: body
        name: data
        schema:
          $ref: '#/definitions/repository.AddWeatherRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/repository.Weather'
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "404":
          description: Регион с regionId не найден или forecastId в данном регионе
            не найдена
          schema:
            type: string
      summary: Добавление погоды
      tags:
      - weather
  /region/weather/{regionId}:
    delete:
      description: Удаление погоды
      parameters:
      - description: regionId
        in: path
        name: regionId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/httputils.EmptyResponse'
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "404":
          description: Регион с regionId не найден или forecastId в данном регионе
            не найдена
          schema:
            type: string
      summary: Удаление погоды
      tags:
      - weather
    get:
      description: Получение погоды по региону
      parameters:
      - description: regionId
        in: path
        name: regionId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/repository.Weather'
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "404":
          description: Тип региона не найден
          schema:
            type: string
      summary: Получение погоды по региону
      tags:
      - weather
    put:
      description: Обновление погоды для региона
      parameters:
      - description: Описание обновления данных погоды в регионе
        in: body
        name: data
        schema:
          $ref: '#/definitions/repository.UpdateWeatherRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/repository.Weather'
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "404":
          description: Регион с regionId не найден или forecastId в данном регионе
            не найдена
          schema:
            type: string
      summary: Обновление погоды для региона
      tags:
      - weather
  /region/weather/forecast:
    post:
      description: Добавление прогноза погоды
      parameters:
      - description: Описание данных прогноза погоды
        in: body
        name: data
        schema:
          $ref: '#/definitions/repository.ForecastAddRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/repository.Forecast'
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "404":
          description: 'Прогноза с таким forecastId не существует '
          schema:
            type: string
      summary: Добавление прогноза погоды
      tags:
      - weather
  /region/weather/forecast/{forecastId}:
    delete:
      description: Удаление прогноза погоды
      parameters:
      - description: forecastId
        in: path
        name: forecastId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/httputils.EmptyResponse'
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "404":
          description: 'Прогноза с таким forecastId не существует '
          schema:
            type: string
      summary: Удаление прогноза погоды
      tags:
      - weather
    get:
      description: Получение прогноза погоды
      parameters:
      - description: forecastId
        in: path
        name: forecastId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/repository.Weather'
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "404":
          description: 'Прогноза с таким forecastId не существует '
          schema:
            type: string
      summary: Получение прогноза погоды
      tags:
      - weather
    put:
      description: Обновление прогноза погоды
      parameters:
      - description: forecastId
        in: path
        name: forecastId
        required: true
        type: integer
      - description: Описание данных обновления прогноза погоды
        in: body
        name: data
        schema:
          $ref: '#/definitions/repository.ForecastUpdateRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/repository.Forecast'
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "404":
          description: 'Прогноза с таким forecastId не существует '
          schema:
            type: string
      summary: Обновление прогноза погоды
      tags:
      - weather
  /region/weather/search:
    get:
      description: Поиск погоды для регионов по полям
      parameters:
      - description: regionId
        in: query
        name: regionId
        type: integer
      - description: Дата и время начала периода для поиска погодных условий, в формате
          ISO-8601
        in: query
        name: startDateTime
        type: string
      - description: Дата и время конца периода для поиска погодных условий, в формате
          ISO-8601
        in: query
        name: endDateTime
        type: string
      - description: 'Погодные условия: CLEAR, CLOUDY, RAIN, SNOW, FOG, STORM'
        in: query
        name: weatherCondition
        type: string
      - description: Количество элементов, которое необходимо пропустить для формирования
          страницы с результатами (по умолчанию 0)
        in: query
        name: from
        type: integer
      - description: Количество элементов на странице (по умолчанию 10)
        in: query
        name: size
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/repository.WeatherSearchResult'
            type: array
        "400":
          description: Некорректный запрос
          schema:
            type: string
        "401":
          description: Пользователь не авторизирован
          schema:
            type: string
        "404":
          description: Регион с regionId не найден или forecastId в данном регионе
            не найдена
          schema:
            type: string
      summary: Поиск погоды для регионов по полям
      tags:
      - weather
  /registration:
    post:
      description: Регистрация учетной записи
      parameters:
      - description: Данные учетной записи для регистрации
        in: body
        name: data
        required: true
        schema:
          $ref: '#/definitions/auth.RegisterAccountRequest'
      produces:
      - application/json
      responses:
        "201":
          description: Created
          schema:
            $ref: '#/definitions/ent.User'
        "400":
          description: Некорректные данные
          schema:
            type: string
        "403":
          description: Запрос от авторизованного аккаунта
          schema:
            type: string
        "409":
          description: Аккаунт с таким email уже существует
          schema:
            type: string
      summary: Регистрация учетной записи
      tags:
      - accounts
swagger: "2.0"
